Thread safe volani

Otázka od: Jiri Cincura

12. 8. 2004 21:11

Ahoj,
  mam takovy dotaz. Mam ve Form1 promennou typu TList. Tu naplnuji pomoci
threadu (cteni ze souboru - 40tis. zaznamu po asi 1kB). Pokud volam Add, je
nutne to obalit do Synchronize? Nikdo jiny v te chvili s tim delat nebude -
Form je disabled, cekam na dokonceni pomoci udalosti, v OnTerminate to opet
povolim.

--
Jiri Cincura
e-mail: mailto:jiri@cincura.net; mailto:xcincura@informatics.muni.cz
ICQ: 314711544
web: http://www.cincura.net; http://photo.cincura.net



Odpovedá: Ludvik Vlcek

13. 8. 2004 6:38

Jiri Cincura napsal(a):
> Ahoj,
> mam takovy dotaz. Mam ve Form1 promennou typu TList. Tu naplnuji pomoci
> threadu (cteni ze souboru - 40tis. zaznamu po asi 1kB). Pokud volam Add, je
> nutne to obalit do Synchronize? Nikdo jiny v te chvili s tim delat nebude -
> Form je disabled, cekam na dokonceni pomoci udalosti, v OnTerminate to opet
> povolim.
>
No, pokud je to tak jak pises, tak ne. Synchronize se pouziva pro
manipulaci v vizualnima komponentama a je v zasade urceno k tomu, kdyz
napr. vlakno (jine nez hlavni) potrebuje cosi vypsat na Form (zmenit
nejaky capture u labelu, nebo tak neco), tak toto realizuje prave pomoci
Synchronize. Coz TList (pokud vim) neni.
A kdyz zajistis, ze s obsahem dane promenne nebude nikdo jiny
manipulovat, dokud vlakno neukonci svoji bohulibou cinnost. Pokud by
hrozilo, ze bude (treba) jine vlakno (napr. hlavni vlakno) chtit
manipulovat s obsahem te promenne, tak pouzij kriticke sekce....

good luck

--
L.V.
jezevec


Odpovedá: Tomas Bradle

13. 8. 2004 11:06

Ja bych jeste doplnil, ze existuje TThreadList, ktery uz ma v sobe zamykani
pomoci kriticke sekce.

Tomas Bradle
t.bradle@worldonline.cz

----- Original Message -----
From: "Ludvik Vlcek" <l.vlcek@noel-plus.cz>
To: <delphi-l@clexpert.cz>
Sent: Friday, August 13, 2004 7:38 AM
Subject: Re: Thread safe volani


> Jiri Cincura napsal(a):
> > Ahoj,
> > mam takovy dotaz. Mam ve Form1 promennou typu TList. Tu naplnuji
pomoci
> > threadu (cteni ze souboru - 40tis. zaznamu po asi 1kB). Pokud volam Add,
je
> > nutne to obalit do Synchronize? Nikdo jiny v te chvili s tim delat
nebude -
> > Form je disabled, cekam na dokonceni pomoci udalosti, v OnTerminate to
opet
> > povolim.
> >
> No, pokud je to tak jak pises, tak ne. Synchronize se pouziva pro
> manipulaci v vizualnima komponentama a je v zasade urceno k tomu, kdyz
> napr. vlakno (jine nez hlavni) potrebuje cosi vypsat na Form (zmenit
> nejaky capture u labelu, nebo tak neco), tak toto realizuje prave pomoci
> Synchronize. Coz TList (pokud vim) neni.
> A kdyz zajistis, ze s obsahem dane promenne nebude nikdo jiny
> manipulovat, dokud vlakno neukonci svoji bohulibou cinnost. Pokud by
> hrozilo, ze bude (treba) jine vlakno (napr. hlavni vlakno) chtit
> manipulovat s obsahem te promenne, tak pouzij kriticke sekce....
>
> good luck
>
>


Odpovedá: Jiri Cincura

13. 8. 2004 12:03

Tomas Bradle wrote:
> Ja bych jeste doplnil, ze existuje TThreadList, ktery uz ma v sobe
> zamykani pomoci kriticke sekce.

Ano, to znam, jen my slo o to, jestli na to muzu sahat. Pokud bych to chtel,
nejakou synchronizaci si tam udelam.  

--
Jiri Cincura
e-mail: mailto:jiri@cincura.net; mailto:xcincura@informatics.muni.cz
ICQ: 314711544
web: http://www.cincura.net; http://photo.cincura.net